package br.com.vendas.menu.importacao;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Collection;

import br.com.main.Main;
import br.com.main.Mapeamento;
import br.com.vendas.dominio.Categoria;
import br.com.vendas.dominio.Cliente;
import br.com.vendas.dominio.Filme;
import br.com.vendas.dominio.IEntity;
import br.com.vendas.dominio.Pedido;
import br.com.vendas.dominio.Pessoa;
import br.com.vendas.exception.ArqException;
import br.com.vendas.menu.ItemMenu;

public class ItemExportarDados  extends ItemMenu{

	@Override
	public int getId() {
		return 1;
	}

	@Override
	public String getNome() {
		return "Exportar Todos os Dados";
	}

	@Override
	protected void processamento() throws IOException, ArqException {
		
		addMensagem("Foram Exportados os Seguintes dados:\n");
		
		//persiste(Categoria.class,"categoria.svrl");
		persiste(Filme.class,"filme.svrl");
		persiste(Cliente.class,"cliente.svrl");
		persiste(Pessoa.class,"pessoa.svrl");
		persiste(Pedido.class,"pedido.svrl");
		
		exibirMenuPrincipal();
	}
	
	@SuppressWarnings("unchecked")
	private void persiste(Class<?> classe,String file) throws IOException {
		Collection<IEntity> objs = Mapeamento.mapeamentos.get(classe.getName());
		if (objs != null) {
			ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
			out.writeObject(objs);
			out.close();
			addMensagem(classe.getSimpleName() +": "+objs.size() + "\n");
		}
	}

}
